草庐IT

C++: vector 的 vector

全部标签

c++ - 在 C++ 中将矩阵高效分解为方形子矩阵

我通过使用1D数据类型并将其包装到行和列中,在C++中实现了Matrix数据类型。现在,我希望有可能从此时开始创建正方形/分块子矩阵,并且我想在内存中进行。问题是我希望这些子矩阵中的一些可以转移到GPU内存并可以在那里并行处理它们。例如,这对矩阵乘法很有用。由于这些子矩阵在主内存中没有对齐,如果不创建单独的拷贝,将它们作为一个单元复制到设备内存看起来是不可能的?我想让这个直接的GPU子矩阵复制映射到CPU原始矩阵以用于更新和效率目的。我事先不知道确切的分区。有人知道我怎样才能实现它吗?提醒一下,矩阵需要按block划分,而不是按行划分,这在C/C++中相对容易。

c++ - vector 结束迭代器

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:comparingiteratorsfromdifferentcontainers在实践中,std::vector::iterator可能被实现为一个包装T*在大多数STL实现中,每个迭代器都与一个唯一的内存地址相关联(假设迭代器来自非空vector)。但是,这是一个实现细节。C++标准是否有任何实际保证,即每个vector迭代器在某种程度上都是唯一的?具体来说,可以end()一个非空vector的迭代器永远等于end()另一个非空vector的迭代器?例如:std::vectorv1;std::vector

c++ - vector动态内存分配之private member vector

我是C++新手(我学过Fortran编程),我想为多维表动态分配内存。该表是私有(private)成员变量:classtheclass{public:voidsetdim(void);private:std::vector>thetable;}我想用函数setdim()设置表格的尺寸。voidtheclass::setdim(void){this->thetable.assign(1000,std::vector(2000));}我编译这个程序没有问题,但是当我执行它时,我遇到了一个段错误。对我来说奇怪的是,这段代码(见下文)完全符合我的要求,只是它没有使用我类的私有(private)

c++ - 使用 mpl::vector 定义 boost::variant 类型

我正在使用库boost::variant来存储大量类型。随着字数越来越多,我很快就要达到20字的极限了。在文档中,似乎可以使用mpl::vector定义变体,它允许超过20种类型(如果我是正确的,最多50种)。我试图像这样替换我的变体定义:#include#includetypedefboost::mpl::vector,relative_point,relative_point,std::string,color,group,dictionnary,reference,line,strip,text,font>variant_mpl_vec;typedefboost::make_va

c++ - 如何使用 CUDA/Thrust 根据其中一个数组中的值对两个数组/vector 进行排序

这是一个关于编程的概念性问题。总而言之,我有两个数组/vector,我需要对一个数组/vector进行排序,其中的变化也在另一个数组中传播,因此如果我对arrayOne进行排序,对于排序中的每个交换-同样的事情也会发生在arrayTwo上。现在,我知道std::sort允许您定义一个比较函数(对于我假设的自定义对象),我正在考虑定义一个以同时交换arrayTwo。所以我想要的是-使用CUDA根据其中一个vector中的值对两个vector进行排序。这就是我的不确定性上升的地方,基本上我想使用Thrust库来进行排序。它是否支持自定义比较函数的定义?如果是这样,我仍然没有弄清楚如何在ar

c++ - 将二进制文件读入 bitset 或 vector<bool>

如何将二进制文件读入bitset或vector?二进制文件的长度会有所不同。有更好的容器吗?我是C++的新手,但有丰富的程序员经验。 最佳答案 如果文件很大,为什么要读取一次,整个文件到内存?每次都可以读一小段。大小由此函数中的大小决定:file.read(buff,size)当buff是char的数组时。对不起,您不能简单地读取/将vector保存到文件中。更多详情seehere和here.然后使用Google,这非常有帮助... 关于c++-将二进制文件读入bitset或vector

c++ - Pro*C 传递参数数组

我正在尝试编写Pro*C/C/C++代码来处理这样的查询:SELECTcol1,col2,col3,col4FROMtableWHEREparamIN();我可以有一个C结构来检索结果并传递各个参数,但我似乎无法在不显式指定列表中的每个值的情况下找到执行此操作的方法。有没有办法将集合作为数组/vector/列表传递? 最佳答案 我问了同样的问题HowtospecifyavariableexpressionlistinaPro*Cquery?我想出了一个相当笨拙的解决方案,但它适用于我的具体情况。它可能不适用于您。

c++ - 与 STL vector 对齐分配

我希望我的vector存储对齐(比如16字节边界),所以我将这个分配器作为memalign()的包装器,我想知道这是否是正确的方法分配用于STLvector的对齐内存。templateclassAlignedAllocator{public:...pointerallocate(size_typesize,const_pointer*hint=0){return(pointer)memalign(Alignment,size*sizeof(T));};voiddeallocate(pointerp,size_typesize){free(p);};...}如果没有,是否有适用于STL容

c++ - 如何在编译时或代码初始化时自动更新数组中的条目?

嗯,我有一个从我的代码运行的抽象虚拟机(“PAWN”),脚本可以执行函数,这些函数从C代码注册到脚本,由我的C++代码执行。C++代码必须以的形式提供一个数组{"name_i_want_the_function_to_have_in_the_script",function_in_my_cpp_code}如果函数不在数组中,则无法执行。(因为它不“存在”)所以这让我们想到了这一点:我的函数是这样的://PawnFunctions#definePWNFUNC(a)staticcellAMX_NATIVE_CALLa(AMX*amx,cell*params)namespacePawnFun

c++ - 替代 std::vector 来存储一系列对象

我正在处理数百万个要按顺序访问的数据元素。元素很少增长和收缩,但会以可预测的方式以已知block大小增长和收缩。我正在寻找类似于std::vector的高效集合,它不会重新分配但将数据保存在多个内存块中。每当我将更多对象放入集合中时,如果最后一个block已用完,则会创建并填充一个新block。我不希望有一个随机访问运营商。由于性能问题和一些超出手头问题范围的其他问题,我无法使用std::list。是否有适合我在boost或任何其他库中的要求的现成集合。在尝试自己做饭之前,我想确保货架上没有可用的东西。 最佳答案 在我看来,最好的选